<?php

declare(strict_types=1);

namespace app\common\dao\sys;

use app\common\model\sys\SysConfig;
use app\common\traits\DaoTrait;

/**
 * 系统配置
 * @author:kaige
 * @update:2022-06-12
 * @copyright ©2022 泉州市盛筑信息科技有限公司 版权所有
 */
class ConfigDao
{
  // 当前操作的模型
  protected $model = null;

  // 对应模型的主键，默认为id
  protected $pk = 'id';

  // 对应模型默认查询的字段
  protected $name = 'name';

  // 对应模型允许查询的字段(默认全部查询)
  protected $allowField = ['*'];

  // 允许单字段更新
  protected $uaField = [];

  // 查询结果-要隐藏的字段 默认空数组
  protected $hideField = [];

  public function __construct()
  {
    $this->model = new SysConfig();
  }

  use DaoTrait;

  /**
   * 获取、设置(键名,键值)
   * @param $name,$val
   * @return bool|string
   */
  public function sysconf($name, $val = null)
  {
    if (empty($val)) {
      $data = $this->model->where(['name' => $name])->column('value', 'name');
      return isset($data[$name]) ? $data[$name] : '';
    } else {
      $data = ['name' => $name, 'value' => $val];
      if ($this->model->where(['name' => $name])->count() > 0) {
        return $this->model->where(['name' => $name])->update(['value' => $val]) !== false;
      }
      return $this->model->insert($data) !== false;
    }
  }

  /**
   * 批量更新保存
   * @param array $post
   * @return array
   */
  public function saveAllData($post)
  {
    $return = _err(1028);
    if (isset($post)) {
      foreach ($post as $key => $val) {
        //写之前执行图片次数变更
        if ($key == 'browser_icon') {
          _use_file($this->sysconf($key), -1); //旧图扣掉次数
          _use_file($val, 1); //新图加次数
        }
        $this->sysconf($key, $val);
      }
      $return = _ok(1029);
    }
    return $return;
  }

  /**
   * 获取所有数据
   * @return array
   */
  public function getalldata()
  {
    return $this->model->column('value','name');
  }
}
